// 20. 有效的括号

function isValid(s: string): boolean {
  if (s.length % 2) return false;
  const map = new Map<string, string>();
  // 存放括号
  map.set(")", "(").set("}", "{").set("]", "[");
  // 栈
  const stack: string[] = [];

  for (const ch of s) {
    if (map.has(ch)) {
      if (!stack.length || stack[stack.length - 1] !== map.get(ch)) {
        return false;
      }
      stack.pop();
    } else {
      stack.push(ch);
    }
  }

  return !stack.length;
}
